<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
 *  
 * @package admin
 * @author Mervin.Wong<mervin0502@163.com>
 * @Copyright
 * @license  http://www.apache.org/licenses/LICENSE-2.0
 * @version 0.1.0
 * @date 2013-2-23上午9:50:11
 *
 */
 
  /**
 * CanGoo Post控制器
 *
 *	文章编辑模块
 *
 * @package		admin
 * @subpackage	Controllers
 * @category	Admin-controllers
 * @author		Mervin.Wong<mervin0502@163.com
 * @link		http://mervin.me/project/cangoo
 */ 
 /**
  * 标题，别名，内容，摘要，状态（发布，草稿）,分类，标签，
  * 添加文章 add
  * 修改文章 update edit
  * 删除文章 delete
  * 所有文章 list all
  * 搜索文章 search
  * 
  * 用户的UID
  * 
  */
class Comment extends CI_Controller{
	/**
	 * 构造函数
	 * @access public
	 * @return void 
	 */
	 public function __construct(){
	 	parent::__construct();
	   	$this->load->helper('url');
  		$this->load->library('session');
  		$this->load->model('common_model');
  		if(!$this->common_model->is_login($this->session->userdata('session_id'))){
  			redirect(site_url('index/login', 'refresh'));
  		}
	 	
	 	$this->load->model('blog/comment_model');
	 	
	 	$this->load->helper('date');
	 	
	 	$this->load->library('form_validation');
	 	$this->form_validation->set_rules('post_title', '标题', 'trim|required|xss_clean|prep_for_form');
	 	$this->form_validation->set_rules('post_excerpt', '摘要', 'trim|required|xss_clean|prep_for_form');
	 	$this->form_validation->set_rules('post_content', '内容', 'trim|required|xss_clean|prep_for_form');
	 	$this->form_validation->set_rules('post_tag', '标签', 'trim|required|xss_clean');
	 	$this->form_validation->set_rules('post_category', '分类', '');
	 	$this->form_validation->set_rules('post_slug', '别名', 'trim|xss_clean|prep_for_form');
	 }
	 
	 /**
	  * 默认执行方法
	  * @access public
	  * @return  void 
	  */
	 public function index(){
	 	$data['post_list'] = '<div id="post_list">'.$this->_table().'</div>';
	 	$this->load->view('blog/post_view',$data);
	 	//redirect(site_url('post/add'));
	 }
	 
	  
	  /**
	   * 添加文章
	   * @access public
	   * @return void
	   */
	  public function add(){
	  	if($this->input->post('is_submit') != 'submit'){
	  		//未提交数据
	  		$action = 'blog/post/add';
	  		$values['title'] = '';
	  		$values['content'] = '';
	  		$values['excerpt'] = '';
	  		$values['tag'] = '';
	  		$values['slug'] = '';
	  		$values['category'] = '';
	  		$values['bpid'] = 0;
	  		$data['post_info'] = $this->_form($action, $values);	  	
	  		
	  			
	  		$this->load->view('blog/post_view', $data);
	  	}else{
			//提交数据
			if($this->form_validation->run() == TRUE){
				//服务器端验证通过
				$this->_insert();
				redirect(site_url('blog/post/index'));
				
			}else{
				$action = 'blog/post/add';
				$values['title'] = set_value('post_title');
				$values['content'] = set_value('post_content');
				$values['excerpt'] = set_value('post_excerpt');
				$values['tag'] = set_value('post_tag');
				$values['slug'] = set_value('post_slug');
				$values['category'] = set_value('post_category');
				$values['bpid'] = 0;
				$data['post_info'] = $this->_form($action, $values);
				 
				
				$this->load->view('blog/post_view', $data);				
			}
	  	}

	  }
	  
	  public function edit($bpid){
	  	if($this->input->post('is_submit') != 'submit'){
	  		//未提交数据
	  		
	  		$action = 'blog/post/edit/'.$bpid;
	  		$post = $this->comment_model->get_one($bpid);
	  		
	  		$values['title'] = $post['title'];
	  		$values['content'] = $post['content'];
	  		$values['excerpt'] = $post['excerpt'];
	  		$values['slug'] = $post['slug'];
	  		
	  		$category = $this->comment_model->get_category($bpid);
	  		$values['category'] = $category['tid'];

	  		$tags = $this->comment_model->get_tags($post['bpid']);
	  		$tags_str = '';
	  		foreach ($tags as $k=>$tag){
	  			if(is_array($tag)){
	  				$tags_str .= $tag['name'].' ';
	  			}else{
	  				if($k == 'name'){
	  					$tags_str .= $tag.' ';
	  				}
	  			}
	  		}
	  		$values['tag'] = $tags_str;
	  		
	  		$values['bpid'] = $bpid;
	  		
	  		$data['post_info'] = $this->_form($action, $values);
	  		 
	  	
	  		$this->load->view('blog/post_view', $data);
	  	}else{
	  		//提交数据
	  		if($this->form_validation->run() == TRUE){
	  			//服务器端验证通过
	  			$this->_update($bpid);
	  			redirect(site_url('blog/post/index'));
	  	
	  		}else{
	  			$action = 'blog/post/edit/'.$bpid;
	  			$values['title'] = set_value('post_title');
	  			$values['content'] = set_value('post_content');
	  			$values['excerpt'] = set_value('post_excerpt');
	  			$values['tag'] = set_value('post_tag');
	  			$values['slug'] = set_value('post_slug');
	  			$values['category'] = set_value('post_category');
	  			$values['bpid'] = $bpid;
	  			$data['post_info'] = $this->_form($action, $values);
	  				
	  	
	  			$this->load->view('blog/post_view', $data);
	  		}
	  	}	  	
	  }
	  
	  /**
	   * 删除一篇文章
	   */
	  public function del($bpid){
	  	$this->_delete($bpid);
	  	redirect(site_url('blog/post/index'));
	  }

	  
	  /**
	   * 插入一条记录
	   */
	  private function _insert(){
	  	//插入两个表：blog_post tax_map
	  	//1，插入blog_post
	  	$post['title'] = $this->input->post('post_title');
		// 文章别名
		/*
		 * 文章别名
		 * 1，当$this->input->post('post_slug') 存在时，将空格已‘-’相连
		 * 2，为空时，转换标题
		 */
		if($this->input->post('post_slug') == ''){
			//为空
			$slug = $this->str2slug(trim($this->input->post('post_title')), '-', 'UTF-8');
		}else{
			$slug = $this->input->post('post_slug');
		}
		$post['slug'] = $slug;	  	
		$post['content'] = $this->input->post('post_content');
	  	$post['excerpt'] = $this->input->post('post_excerpt');
	  	$post['status'] = ($this->input->post('submit_publish') != '文章发布')?'draft':'publish';
	  	
	  	$post['uid'] = $this->session->userdata('uid');
	  	$post['addTime'] = now();
	  	$post['modTime'] = now();
	  	$post['commentNum'] = 0;
	  	$post['viewNum'] = 1;
	  	
	  	$bpid = $this->comment_model->insert($post, 'blog_post');
	  	
	  	//2 插入映射表
	  	$category_id = $this->input->post('post_category');
	  	$this->comment_model->insert(array('tid'=>$category_id, 'pid'=>$bpid), 'tax_map');
	  	//将该taxonomy下的count字段+1
		$this->comment_model->update_count($category_id, 1);
		
		
	  	$tags = explode(' ', $this->input->post('post_tag'));//输入框中的一个空格分割
	  	foreach($tags as $tag){
	  		if(!empty($tag)){
		  		$tag_id = $this->comment_model->get_tag_id(trim($tag));
		  		if($tag_id == 0){
		  			//如果不存在该标签
		  			$tax['parent'] = 0;
		  			$tax['name'] = trim($tag);
		  			$tax['slug'] = $this->str2slug(trim($tag), '', 'UTF-8');
		  			$tax['description'] = trim($tag);
		  			$tax['module'] = 'blog';
		  			$tax['type'] = 'tag';
		  			$tax['count'] = 1;
		  			$tax['isDefault'] = 0;
		  			$tax['addTime'] = now();
		  			$tax['modTime'] = now();
		  			
		  			$tag_id = $this->comment_model->insert($tax, 'taxonomy');
		  		}else{
					//将该taxonomy下的count字段+1
					$this->comment_model->update_count($tag_id, 1);
					}
		  		$this->comment_model->insert(array('tid'=>$tag_id, 'pid'=>$bpid), 'tax_map');
	  		}
	  	}
	  }

	/**
	 * 更新一条记录
	 * @param int $bpid
	 * @return bool
	 */  
	private function _update($bpid){
		if($bpid == $this->input->post('post_id')){
			//1，更新blog_post
			$post['title'] = $this->input->post('post_title');
			
			// 文章别名
			/*
			 * 文章别名
			 * 1，当$this->input->post('post_slug') 存在时，将空格已‘-’相连
			 * 2，为空时，转换标题
			 */
			if($this->input->post('post_slug') == ''){
				//为空
				$slug = $this->str2slug(trim($this->input->post('post_title')), '-', 'UTF-8');
			}else{
				$slug = $this->input->post('post_slug');
			}
			$post['slug'] = $slug;
			$post['content'] = $this->input->post('post_content');
			$post['excerpt'] = $this->input->post('post_excerpt');
			$post['status'] = ($this->input->post('submit_publish') != '文章发布')?'draft':'publish';
			
			$post['uid'] = $this->session->userdata('uid');
			$post['modTime'] = now();
			
			$this->comment_model->update($post, 'blog_post', array('bpid'=>$bpid));
			//2 插入映射表
			//将关于map表中的bpid映射记录全部删除，然后在重新插入
			$this->comment_model->delete('tax_map', array('pid'=>$bpid));
			
			//重新插入映射
			$category_id = $this->input->post('post_category');
			$this->comment_model->insert(array('tid'=>$category_id, 'pid'=>$bpid), 'tax_map');
			//将该taxonomy下的count字段+1
			$this->comment_model->update_count($category_id, 1);
			
			$tags = explode(' ', $this->input->post('post_tag'));//输入框中的一个空格分割
			foreach($tags as $tag){
				if(!empty($tag)){
					$tag_id = $this->comment_model->get_tag_id(trim($tag));
					if($tag_id == 0){
						//如果不存在该标签
						$tax['parent'] = 0;
						$tax['name'] = trim($tag);
						$tax['slug'] = $this->str2slug(trim($tag), '', 'UTF-8');
						$tax['description'] = trim($tag);
						$tax['module'] = 'blog';
						$tax['type'] = 'tag';
						$tax['count'] = 1;//当前文章
						$tax['isDefault'] = 0;
						$tax['addTime'] = now();
						$tax['modTime'] = now();
				
						$tag_id = $this->comment_model->insert($tax, 'taxonomy');
					}else{
						//将该taxonomy下的count字段+1
						$this->comment_model->update_count($tag_id, 1);
					}
					$this->comment_model->insert(array('tid'=>$tag_id, 'pid'=>$bpid), 'tax_map');
				}
			}			
			return true;
		}else{
			return false;
		}
	}
	
	/**
	 * 删除一篇文章
	 * @param int $bpid
	 */
	private function _delete($bpid){
		//删除blog_post记录
		$this->comment_model->delete('blog_post', array('bpid'=>$bpid));
		//将taxonomy中的count字段数-1
		$res = $this->comment_model->get_all('tid', 'tax_map', array('pid'=>$bpid));
		foreach($res as $v){
			$this->comment_model->update_count($v['tid'], -1);
		}
		//删除映射map记录
		$this->comment_model->delete('tax_map', array('pid'=>$bpid));

	}
  	/**
  	 * 文章列表 
  	 * @access private
  	 * @return array 表格信息
  	 */
  	 private function _table(){
  	 	$this->load->library('table');
  	 	//模板
 		$tmpl = array (
            'table_open'          => '<table id="post_table" border="0" cellpadding="4" cellspacing="0">',

            'heading_row_start'   => '<tr>',
            'heading_row_end'     => '</tr>',
            'heading_cell_start'  => '<th>',
            'heading_cell_end'    => '</th>',

            'row_start'           => '<tr class="t1">',
            'row_end'             => '</tr>',
            'cell_start'          => '<td>',
            'cell_end'            => '</td>',

            'row_alt_start'       => '<tr class="t2">',
            'row_alt_end'         => '</tr>',
            'cell_alt_start'      => '<td>',
            'cell_alt_end'        => '</td>',

            'table_close'         => '</table>'
        );
		$this->table->set_template($tmpl);
  	 	//标题栏
  	 	$this->table->set_heading('作者','评论','文章', '操作');
  	 	$comments = $this->comment_model->get_all(array('cid', 'parent', 'pid', 'uid', 'text', 'userData'), 'comment');
  	 	$table = array();
  	 	$i = 0;
  	 	foreach($comments as $comment){
			
  	 		$table[$i]['operation'] = anchor(site_url('blog/post/edit/'.$post['bpid']), '编辑');
  	 		$table[$i]['operation'] .= '&nbsp;'.anchor(site_url('blog/post/del/'.$post['bpid']),'删除');
  	 		$i++;
  	 	}
  	 	return $this->table->generate($table);
  	 }
  	 
	  /**
	   * 引入表单
	   * @access public
	   * @param string $action description
	   * @param array $values 表单域 值数组
	   * @return string 表单
	   */
	  private function _form($action, $values){
	  	//获取所有的分类
	  	$tree = $this->comment_model->get_category_tree(array('tid', 'parent', 'name')); 
 		$category_list = array();
 		foreach($tree as $k=>$v){
 			$category_list[$k]=$v['parent_category']['name'];
			if(isset($v['sub_category'])){
	 			foreach($v['sub_category'] as $k2=>$v2){
	 				// 一个子类属于一个父类 
	 				$category_list[$k2] = '--'.$v2['name'];
	 			}
 			}
 		}
 		
	  	$this->load->helper('form');
	  	$form = form_open($action, array('name'=>'post_form', 'id'=>'post_form'));
	  	$form .= '<div id = "post_form_left">';
	  	$form .= '<p>';
	  	$form .= form_label('标题:', 'post_title');
	  	$form .= form_input(array('name'=>'post_title', 'id'=>'post_title', 'value'=>$values['title'], 'size'=>60));
	  	$form .= '</p><p>';
	  	$form .= form_textarea(array('name'=>'post_content', 'id'=>'post_content', 'rows'=>20, 'cols'=>100, 'value'=>$values['content'], 'style'=>'width:720px'));
	  	$form .= '</p><p>';
	  	$form .= form_textarea(array('name'=>'post_excerpt', 'id'=>'post_excerpt', 'rows'=>5, 'cols'=>100, 'value'=>$values['excerpt'], 'style'=>'width:720px'));
	  	$form .= '</p><p>';
	  	$form .= form_label('标签:', 'post_tag');
	  	$form .= form_input(array('name'=>'post_tag', 'id'=>'post_tag', 'value'=>$values['tag'], 'size'=>80));
	  	$form .= '</p>';
	  	$form .= '</div>';
	  	$form .='<div id = "post_form_right">';
	  	$form .= '<p>';
	  	$form .= form_label('别名:', 'post_slug');
	  	$form .= form_input(array('name'=>'post_slug', 'id'=>'post_slug', 'value'=>$values['slug'], 'size'=>20));
	  	$form .= '</p><p>';
	  	$form .= form_label('分类:', 'post_category');
	  	$form .= form_dropdown('post_category', $category_list, $values['category']);
	  	$form .= '</p><p>';
	  	$form .= form_hidden('post_id', $values['bpid']);
	  	$form .= form_hidden('is_submit', 'submit');
	  	$form .= form_submit('submit_publish', '文章发布');
	  	$form .= form_submit('submit_draft', '保存草稿');
	  	$form .= '</div>';
	  	
	  	return $form;
	  	
	  }
	  
	  

	  
	  /**
	   * 有一段字符串（汉字，字母，标点符号）转换
	   * @access private
	   * @param string $str description
	   * @param string $connector
	   * @return string|bool description
	   */
	  
	  private function str2slug($str, $connector = '', $type){
	  	$slug = '';
		if(function_exists('iconv_strlen')){
			$len = iconv_strlen($str);
			echo $len.'<br/>';
			for($i=0; $i < $len; $i++){
				$w = iconv_substr($str, $i, 1, $type);
				$asc = ord($w);
				if($asc > 127){
					$slug .= $this->pinyin($w, $type).$connector;
				} else if(($asc >= 48 && $asc <= 57) || ($asc >= 65 && $asc <= 90) || ($asc >= 97 && $asc <= 122)){
				 	$slug .= $w;
				 } else if($asc != 0){
				 	$slug .= $connector;
				 } else{
				 	
				 }
			}
			return $slug;
		}else if(function_exists('mb_strlen')){
			$len = mb_strlen($str);
			for($i=0; $i < $len; $i++){
				$w = mb_substr($str, $i, 1, $type);
				$asc = ord($w);
				if($asc > 127){
					$slug .= $this->pinyin($w, $type).$connector;
				} else if(($asc >= 48 && $asc <= 57) || ($asc >= 65 && $asc <= 90) || ($asc >= 97 && $asc <= 122)){
				 	$slug .= $w;
				 } else{
				 	$slug .= $connector;
				 }
			}
			return $slug;
		}else{
			return false;
		}
	  }
	  
	  /**
	   *
	   * 由汉字转化为拼音
	   * 
	   **/
	  function pinyin($_String, $_Code = 'gb2312') {
	  	$_DataKey = "a|ai|an|ang|ao|ba|bai|ban|bang|bao|bei|ben|beng|bi|bian|biao|bie|bin|bing|bo|bu|ca|cai|can|cang|cao|ce|ceng|cha" . "|chai|chan|chang|chao|che|chen|cheng|chi|chong|chou|chu|chuai|chuan|chuang|chui|chun|chuo|ci|cong|cou|cu|" . "cuan|cui|cun|cuo|da|dai|dan|dang|dao|de|deng|di|dian|diao|die|ding|diu|dong|dou|du|duan|dui|dun|duo|e|en|er" . "|fa|fan|fang|fei|fen|feng|fo|fou|fu|ga|gai|gan|gang|gao|ge|gei|gen|geng|gong|gou|gu|gua|guai|guan|guang|gui" . "|gun|guo|ha|hai|han|hang|hao|he|hei|hen|heng|hong|hou|hu|hua|huai|huan|huang|hui|hun|huo|ji|jia|jian|jiang" . "|jiao|jie|jin|jing|jiong|jiu|ju|juan|jue|jun|ka|kai|kan|kang|kao|ke|ken|keng|kong|kou|ku|kua|kuai|kuan|kuang" . "|kui|kun|kuo|la|lai|lan|lang|lao|le|lei|leng|li|lia|lian|liang|liao|lie|lin|ling|liu|long|lou|lu|lv|luan|lue" . "|lun|luo|ma|mai|man|mang|mao|me|mei|men|meng|mi|mian|miao|mie|min|ming|miu|mo|mou|mu|na|nai|nan|nang|nao|ne" . "|nei|nen|neng|ni|nian|niang|niao|nie|nin|ning|niu|nong|nu|nv|nuan|nue|nuo|o|ou|pa|pai|pan|pang|pao|pei|pen" . "|peng|pi|pian|piao|pie|pin|ping|po|pu|qi|qia|qian|qiang|qiao|qie|qin|qing|qiong|qiu|qu|quan|que|qun|ran|rang" . "|rao|re|ren|reng|ri|rong|rou|ru|ruan|rui|run|ruo|sa|sai|san|sang|sao|se|sen|seng|sha|shai|shan|shang|shao|" . "she|shen|sheng|shi|shou|shu|shua|shuai|shuan|shuang|shui|shun|shuo|si|song|sou|su|suan|sui|sun|suo|ta|tai|" . "tan|tang|tao|te|teng|ti|tian|tiao|tie|ting|tong|tou|tu|tuan|tui|tun|tuo|wa|wai|wan|wang|wei|wen|weng|wo|wu" . "|xi|xia|xian|xiang|xiao|xie|xin|xing|xiong|xiu|xu|xuan|xue|xun|ya|yan|yang|yao|ye|yi|yin|ying|yo|yong|you" . "|yu|yuan|yue|yun|za|zai|zan|zang|zao|ze|zei|zen|zeng|zha|zhai|zhan|zhang|zhao|zhe|zhen|zheng|zhi|zhong|" . "zhou|zhu|zhua|zhuai|zhuan|zhuang|zhui|zhun|zhuo|zi|zong|zou|zu|zuan|zui|zun|zuo";
	  	$_DataValue = "-20319|-20317|-20304|-20295|-20292|-20283|-20265|-20257|-20242|-20230|-20051|-20036|-20032|-20026|-20002|-19990" . "|-19986|-19982|-19976|-19805|-19784|-19775|-19774|-19763|-19756|-19751|-19746|-19741|-19739|-19728|-19725" . "|-19715|-19540|-19531|-19525|-19515|-19500|-19484|-19479|-19467|-19289|-19288|-19281|-19275|-19270|-19263" . "|-19261|-19249|-19243|-19242|-19238|-19235|-19227|-19224|-19218|-19212|-19038|-19023|-19018|-19006|-19003" . "|-18996|-18977|-18961|-18952|-18783|-18774|-18773|-18763|-18756|-18741|-18735|-18731|-18722|-18710|-18697" . "|-18696|-18526|-18518|-18501|-18490|-18478|-18463|-18448|-18447|-18446|-18239|-18237|-18231|-18220|-18211" . "|-18201|-18184|-18183|-18181|-18012|-17997|-17988|-17970|-17964|-17961|-17950|-17947|-17931|-17928|-17922" . "|-17759|-17752|-17733|-17730|-17721|-17703|-17701|-17697|-17692|-17683|-17676|-17496|-17487|-17482|-17468" . "|-17454|-17433|-17427|-17417|-17202|-17185|-16983|-16970|-16942|-16915|-16733|-16708|-16706|-16689|-16664" . "|-16657|-16647|-16474|-16470|-16465|-16459|-16452|-16448|-16433|-16429|-16427|-16423|-16419|-16412|-16407" . "|-16403|-16401|-16393|-16220|-16216|-16212|-16205|-16202|-16187|-16180|-16171|-16169|-16158|-16155|-15959" . "|-15958|-15944|-15933|-15920|-15915|-15903|-15889|-15878|-15707|-15701|-15681|-15667|-15661|-15659|-15652" . "|-15640|-15631|-15625|-15454|-15448|-15436|-15435|-15419|-15416|-15408|-15394|-15385|-15377|-15375|-15369" . "|-15363|-15362|-15183|-15180|-15165|-15158|-15153|-15150|-15149|-15144|-15143|-15141|-15140|-15139|-15128" . "|-15121|-15119|-15117|-15110|-15109|-14941|-14937|-14933|-14930|-14929|-14928|-14926|-14922|-14921|-14914" . "|-14908|-14902|-14894|-14889|-14882|-14873|-14871|-14857|-14678|-14674|-14670|-14668|-14663|-14654|-14645" . "|-14630|-14594|-14429|-14407|-14399|-14384|-14379|-14368|-14355|-14353|-14345|-14170|-14159|-14151|-14149" . "|-14145|-14140|-14137|-14135|-14125|-14123|-14122|-14112|-14109|-14099|-14097|-14094|-14092|-14090|-14087" . "|-14083|-13917|-13914|-13910|-13907|-13906|-13905|-13896|-13894|-13878|-13870|-13859|-13847|-13831|-13658" . "|-13611|-13601|-13406|-13404|-13400|-13398|-13395|-13391|-13387|-13383|-13367|-13359|-13356|-13343|-13340" . "|-13329|-13326|-13318|-13147|-13138|-13120|-13107|-13096|-13095|-13091|-13076|-13068|-13063|-13060|-12888" . "|-12875|-12871|-12860|-12858|-12852|-12849|-12838|-12831|-12829|-12812|-12802|-12607|-12597|-12594|-12585" . "|-12556|-12359|-12346|-12320|-12300|-12120|-12099|-12089|-12074|-12067|-12058|-12039|-11867|-11861|-11847" . "|-11831|-11798|-11781|-11604|-11589|-11536|-11358|-11340|-11339|-11324|-11303|-11097|-11077|-11067|-11055" . "|-11052|-11045|-11041|-11038|-11024|-11020|-11019|-11018|-11014|-10838|-10832|-10815|-10800|-10790|-10780" . "|-10764|-10587|-10544|-10533|-10519|-10331|-10329|-10328|-10322|-10315|-10309|-10307|-10296|-10281|-10274" . "|-10270|-10262|-10260|-10256|-10254";
	  	$_TDataKey = explode ( '|', $_DataKey );
	  	$_TDataValue = explode ( '|', $_DataValue );
	  	$_Data = (PHP_VERSION >= '5.0') ? array_combine ( $_TDataKey, $_TDataValue ) : _Array_Combine ( $_TDataKey, $_TDataValue );
	  	arsort ( $_Data );
	  	reset ( $_Data );
	  	if ($_Code != 'gb2312')
	  		$_String = $this->_U2_Utf8_Gb ( $_String );
	  	$_Res = '';
	  	for($i = 0; $i < strlen ( $_String ); $i ++) {
	  		$_P = ord ( substr ( $_String, $i, 1 ) );
	  		if ($_P > 160) {
	  			$_Q = ord ( substr ( $_String, ++ $i, 1 ) );
	  			$_P = $_P * 256 + $_Q - 65536;
	  		}
	  		$_Res .= $this->_pinyin ( $_P, $_Data ).'-';
	  	}
	  	$_Res = substr($_Res, 0, strlen($_Res)-1);
	  	return preg_replace ( "/[^a-z0-9-]*/", '', $_Res );
	  }
	  private function _pinyin($_Num, $_Data) {
	  	if ($_Num > 0 && $_Num < 160)
	  		return chr ( $_Num );
	  	elseif ($_Num < - 20319 || $_Num > - 10247)
	  	return '';
	  	else {
	  		foreach ( $_Data as $k => $v ) {
	  			if ($v <= $_Num)
	  				break;
	  		}
	  		return $k;
	  	}
	  }
	  function _U2_Utf8_Gb($_C) {
	  	$_String = '';
	  	if ($_C < 0x80)
	  		$_String .= $_C;
	  	elseif ($_C < 0x800) {
	  		$_String .= chr ( 0xC0 | $_C >> 6 );
	  		$_String .= chr ( 0x80 | $_C & 0x3F );
	  	} elseif ($_C < 0x10000) {
	  		$_String .= chr ( 0xE0 | $_C >> 12 );
	  		$_String .= chr ( 0x80 | $_C >> 6 & 0x3F );
	  		$_String .= chr ( 0x80 | $_C & 0x3F );
	  	} elseif ($_C < 0x200000) {
	  		$_String .= chr ( 0xF0 | $_C >> 18 );
	  		$_String .= chr ( 0x80 | $_C >> 12 & 0x3F );
	  		$_String .= chr ( 0x80 | $_C >> 6 & 0x3F );
	  		$_String .= chr ( 0x80 | $_C & 0x3F );
	  	}
	  	return iconv ( 'UTF-8', 'GB2312', $_String );
	  }
	  function _Array_Combine($_Arr1, $_Arr2) {
	  	for($i = 0; $i < count ( $_Arr1 ); $i ++)
	  		$_Res [$_Arr1 [$i]] = $_Arr2 [$i];
	  	return $_Res;
	  }
	  
	  
	  
}
/* End of file post.php*/
/* Location : ./apps/admin/controllers/blog/post.php */